package test;

import java.util.HashSet;
import java.util.Set;

/**
 * @author: 弓赛鹏
 * @create: 2022-03-14 15:49
 * @description:
 *
1、HashSet去重
2、Set.retailAll(s2)方法判断两数中是否存在有重复的数
3、注意强制类型的转换
 */
public class 排它平方数 {

    public static void main(String[] args) {
        for (int i=100000;i<1000000;i++){
            if(B(i)){
                System.out.println("第一层："+i);
                if(i!=203879 ) {
                    System.out.println("第二层："+i);
                }
            }
        }
    }
    public static Set A(long m){//去重
        String s=""+m;
        Set h=new HashSet<>();
        for (int i=0;i<s.length();i++){
            //java.lang.String.charAt() 方法返回指定索引处的char值。
            // 索引范围是从0到length() - 1。对于数组索引，
            // 序列的第一个char值是在索引为0，索引1，依此类推
            h.add(s.charAt(i));
        }
        return h;
    }
    public static boolean B(int n){
        Set s1=A(n);
        Set s2=A((long)n*n);//强制转换成long
        if(s1.size()!=6) {
            return false;
        }
        //移除这个 set 中的所有的不包含在指定的 collection 中的元素。
        // 如果指定的 collection 也是一个 set，这个操作实际上就会修改调用这个方法的 set，
        // 使之剩下的元素为这两个 set 的交集。
        s1.retainAll(s2);
        //判断s1是否为null
        return s1.isEmpty();
    }

}
